{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Circuit Basics \n",
    "\n",
    "Here, we provide an overview of working with Qiskit.  Qiskit provides the basic building blocks necessary to program quantum computers. The fundamental unit of Qiskit is the [quantum circuit](https://en.wikipedia.org/wiki/Quantum_circuit). A basic workflow using Qiskit consists of two stages: **Build** and **Run**. **Build** allows you to make different quantum circuits that represent the problem you are solving, and **Run** that allows you to run them on different backends.  After the jobs have been run, the data is collected and postprocessed depending on the desired output."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-10T11:37:44.387267Z",
     "start_time": "2019-08-10T11:37:41.934365Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from qiskit import QuantumCircuit\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Building the circuit <a name='basics'></a>\n",
    "\n",
    "The basic element needed for your first program is the QuantumCircuit.  We begin by creating a `QuantumCircuit` comprised of three qubits."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-10T11:37:44.392806Z",
     "start_time": "2019-08-10T11:37:44.389673Z"
    }
   },
   "outputs": [],
   "source": [
    "# Create a Quantum Circuit acting on a quantum register of three qubits\n",
    "circ = QuantumCircuit(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "After you create the circuit with its registers, you can add gates (\"operations\") to manipulate the registers. As you proceed through the tutorials you will find more gates and circuits; below is an example of a quantum circuit that makes a three-qubit GHZ state\n",
    "\n",
    "$$|\\psi\\rangle = \\left(|000\\rangle+|111\\rangle\\right)/\\sqrt{2}.$$\n",
    "\n",
    "To create such a state, we start with a three-qubit quantum register. By default, each qubit in the register is initialized to $|0\\rangle$. To make the GHZ state, we apply the following gates:\n",
    "- A Hadamard gate $H$ on qubit 0, which puts it into the superposition state $\\left(|0\\rangle+|1\\rangle\\right)/\\sqrt{2}$.\n",
    "- A controlled-Not operation ($C_{X}$) between qubit 0 and qubit 1.\n",
    "- A controlled-Not operation between qubit 0 and qubit 2.\n",
    "\n",
    "On an ideal quantum computer, the state produced by running this circuit would be the GHZ state above.\n",
    "\n",
    "In Qiskit, operations can be added to the circuit one by one, as shown below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-10T11:37:44.401502Z",
     "start_time": "2019-08-10T11:37:44.395545Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<qiskit.circuit.instructionset.InstructionSet at 0x7fbfb0bd5400>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Add a H gate on qubit 0, putting this qubit in superposition.\n",
    "circ.h(0)\n",
    "# Add a CX (CNOT) gate on control qubit 0 and target qubit 1, putting\n",
    "# the qubits in a Bell state.\n",
    "circ.cx(0, 1)\n",
    "# Add a CX (CNOT) gate on control qubit 0 and target qubit 2, putting\n",
    "# the qubits in a GHZ state.\n",
    "circ.cx(0, 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualize Circuit <a name='visualize'></a>\n",
    "\n",
    "You can visualize your circuit using Qiskit `QuantumCircuit.draw()`, which plots the circuit in the form found in many textbooks."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-10T11:37:44.762773Z",
     "start_time": "2019-08-10T11:37:44.403727Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 267.197x204.68 with 1 Axes>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circ.draw('mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this circuit, the qubits are put in order, with qubit zero at the top and qubit two at the bottom. The circuit is read left to right (meaning that gates that are applied earlier in the circuit show up further to the left)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-info\">\n",
    "\n",
    "\n",
    "When representing the state of a multi-qubit system, the tensor order used in Qiskit is different than that used in most physics textbooks. Suppose there are $n$ qubits, and qubit $j$ is labeled as $Q_{j}$. Qiskit uses an ordering in which the $n^{\\mathrm{th}}$ qubit is on the <em><strong>left</strong></em> side of the tensor product, so that the basis vectors are labeled as  $Q_{n-1}\\otimes \\cdots  \\otimes  Q_1\\otimes Q_0$.\n",
    "\n",
    "For example, if qubit zero is in state 0, qubit 1 is in state 0, and qubit 2 is in state 1, Qiskit would represent this state as $|100\\rangle$, whereas many physics textbooks would represent it as $|001\\rangle$.\n",
    "\n",
    "This difference in labeling affects the way multi-qubit operations are represented as matrices. For example, Qiskit represents a controlled-X ($C_{X}$) operation with qubit 0 being the control and qubit 1 being the target as\n",
    "\n",
    "$$C_X = \\begin{pmatrix} 1 & 0 & 0 & 0 \\\\  0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\\\end{pmatrix}.$$\n",
    "\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Simulating circuits <a name='simulation'></a>\n",
    "\n",
    "To simulate a circuit we use the quant-info module in Qiskit.  This simulator returns the quantum state, which is a complex vector of dimensions $2^n$, where $n$ is the number of qubits \n",
    "(so be careful using this as it will quickly get too large to run on your machine).\n",
    "\n",
    "There are two stages to the simulator. The fist is to set the input state and the second to evolve the state by the quantum circuit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$$\n",
       "\n",
       "\\begin{bmatrix}\n",
       "\\tfrac{1}{\\sqrt{2}} & 0 & 0 & 0 & 0 & 0 & 0 & \\tfrac{1}{\\sqrt{2}}  \\\\\n",
       " \\end{bmatrix}\n",
       "$$"
      ],
      "text/plain": [
       "<IPython.core.display.Latex object>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.quantum_info import Statevector\n",
    "\n",
    "# Set the intial state of the simulator to the ground state using from_int\n",
    "state = Statevector.from_int(0, 2**3)\n",
    "\n",
    "# Evolve the state by the quantum circuit\n",
    "state = state.evolve(circ)\n",
    "\n",
    "#draw using latex\n",
    "state.draw('latex')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Qiskit also provides a visualization toolbox to allow you to view the state.\n",
    "\n",
    "Below, we use the visualization function to plot the qsphere  and a hinton representing the real and imaginary components of the state density matrix $\\rho$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 2 Axes>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "state.draw('qsphere')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 2 Axes>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "state.draw('hinton')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Unitary representation of a circuit"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Qiskit's quant_info module also has an operator method which can be used to make a unitary operator for the circuit. This calculates the $2^n \\times 2^n$ matrix representing the quantum circuit. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-10T11:37:45.626148Z",
     "start_time": "2019-08-10T11:37:45.607840Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.70710678+0.j,  0.70710678+0.j,  0.        +0.j,\n",
       "         0.        +0.j,  0.        +0.j,  0.        +0.j,\n",
       "         0.        +0.j,  0.        +0.j],\n",
       "       [ 0.        +0.j,  0.        +0.j,  0.        +0.j,\n",
       "         0.        +0.j,  0.        +0.j,  0.        +0.j,\n",
       "         0.70710678+0.j, -0.70710678+0.j],\n",
       "       [ 0.        +0.j,  0.        +0.j,  0.70710678+0.j,\n",
       "         0.70710678+0.j,  0.        +0.j,  0.        +0.j,\n",
       "         0.        +0.j,  0.        +0.j],\n",
       "       [ 0.        +0.j,  0.        +0.j,  0.        +0.j,\n",
       "         0.        +0.j,  0.70710678+0.j, -0.70710678+0.j,\n",
       "         0.        +0.j,  0.        +0.j],\n",
       "       [ 0.        +0.j,  0.        +0.j,  0.        +0.j,\n",
       "         0.        +0.j,  0.70710678+0.j,  0.70710678+0.j,\n",
       "         0.        +0.j,  0.        +0.j],\n",
       "       [ 0.        +0.j,  0.        +0.j,  0.70710678+0.j,\n",
       "        -0.70710678+0.j,  0.        +0.j,  0.        +0.j,\n",
       "         0.        +0.j,  0.        +0.j],\n",
       "       [ 0.        +0.j,  0.        +0.j,  0.        +0.j,\n",
       "         0.        +0.j,  0.        +0.j,  0.        +0.j,\n",
       "         0.70710678+0.j,  0.70710678+0.j],\n",
       "       [ 0.70710678+0.j, -0.70710678+0.j,  0.        +0.j,\n",
       "         0.        +0.j,  0.        +0.j,  0.        +0.j,\n",
       "         0.        +0.j,  0.        +0.j]])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.quantum_info import Operator\n",
    "\n",
    "U = Operator(circ)\n",
    "\n",
    "# Show the results\n",
    "U.data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## OpenQASM backend"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The simulators above are useful because they provide information about the state output by the ideal circuit and the matrix representation of the circuit. However, a real experiment terminates by _measuring_ each qubit (usually in the computational $|0\\rangle, |1\\rangle$ basis). Without measurement, we cannot gain information about the state. Measurements cause the quantum system to collapse into classical bits. \n",
    "\n",
    "For example, suppose we make independent measurements on each qubit of the three-qubit GHZ state\n",
    "\n",
    "$$|\\psi\\rangle = (|000\\rangle +|111\\rangle)/\\sqrt{2},$$\n",
    "\n",
    "and let $xyz$ denote the bitstring that results. Recall that, under the qubit labeling used by Qiskit, $x$ would correspond to the outcome on qubit 2, $y$ to the outcome on qubit 1, and $z$ to the outcome on qubit 0. \n",
    "\n",
    "<div class=\"alert alert-block alert-info\">\n",
    "<b>Note:</b> This representation of the bitstring puts the most significant bit (MSB) on the left, and the least significant bit (LSB) on the right. This is the standard ordering of binary bitstrings. We order the qubits in the same way (qubit representing the MSB has index 0), which is why Qiskit uses a non-standard tensor product order.\n",
    "</div>\n",
    "\n",
    "Recall the probability of obtaining outcome $xyz$ is given by\n",
    "\n",
    "$$\\mathrm{Pr}(xyz) = |\\langle xyz | \\psi \\rangle |^{2}$$\n",
    "\n",
    "and as such for the GHZ state probability of obtaining 000 or 111 are both 1/2.\n",
    "\n",
    "To simulate a circuit that includes measurement, we need to add measurements to the original circuit above, and use a different Aer backend."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-10T11:37:45.840681Z",
     "start_time": "2019-08-10T11:37:45.627937Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 507.997x264.88 with 1 Axes>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create a Quantum Circuit\n",
    "meas = QuantumCircuit(3, 3)\n",
    "meas.barrier(range(3))\n",
    "# map the quantum measurement to the classical bits\n",
    "meas.measure(range(3), range(3))\n",
    "\n",
    "# The Qiskit circuit object supports composition.\n",
    "# Here the meas has to be first and front=True (putting it before) \n",
    "# as compose must put a smaller circuit into a larger one.\n",
    "qc = meas.compose(circ, range(3), front=True)\n",
    "\n",
    "#drawing the circuit\n",
    "qc.draw('mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This circuit adds a classical register, and three measurements that are used to map the outcome of qubits to the classical bits. \n",
    "\n",
    "To simulate this circuit, we use the ``qasm_simulator`` in Qiskit Aer. Each run of this circuit will yield either the bitstring 000 or 111. To build up statistics about the distribution of the bitstrings (to, e.g., estimate $\\mathrm{Pr}(000)$), we need to repeat the circuit many times. The number of times the circuit is repeated can be specified in the ``execute`` function, via the ``shots`` keyword."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-10T11:37:45.868074Z",
     "start_time": "2019-08-10T11:37:45.842666Z"
    }
   },
   "outputs": [],
   "source": [
    "# Adding the transpiler to reduce the circuit to QASM instructions\n",
    "# supported by the backend\n",
    "from qiskit import transpile \n",
    "\n",
    "# Use Aer's qasm_simulator\n",
    "from qiskit.providers.aer import QasmSimulator\n",
    "\n",
    "backend = QasmSimulator()\n",
    "\n",
    "# First we have to transpile the quantum circuit \n",
    "# to the low-level QASM instructions used by the \n",
    "# backend\n",
    "qc_compiled = transpile(qc, backend)\n",
    "\n",
    "# Execute the circuit on the qasm simulator.\n",
    "# We've set the number of repeats of the circuit\n",
    "# to be 1024, which is the default.\n",
    "job_sim = backend.run(qc_compiled, shots=1024)\n",
    "\n",
    "# Grab the results from the job.\n",
    "result_sim = job_sim.result()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Once you have a result object, you can access the counts via the function `get_counts(circuit)`. This gives you the _aggregated_ binary outcomes of the circuit you submitted."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-10T11:37:45.873600Z",
     "start_time": "2019-08-10T11:37:45.869929Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'000': 505, '111': 519}\n"
     ]
    }
   ],
   "source": [
    "counts = result_sim.get_counts(qc_compiled)\n",
    "print(counts)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Approximately 50 percent of the time, the output bitstring is 000. Qiskit also provides a function `plot_histogram`, which allows you to view the outcomes. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-10T11:37:45.991815Z",
     "start_time": "2019-08-10T11:37:45.875518Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.visualization import plot_histogram\n",
    "plot_histogram(counts)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The estimated outcome probabilities $\\mathrm{Pr}(000)$ and  $\\mathrm{Pr}(111)$ are computed by taking the aggregate counts and dividing by the number of shots (times the circuit was repeated). Try changing the ``shots`` keyword in the ``execute`` function and see how the estimated probabilities change."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-08-10T11:38:18.277518Z",
     "start_time": "2019-08-10T11:38:18.224481Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<h3>Version Information</h3><table><tr><th>Qiskit Software</th><th>Version</th></tr><tr><td>Qiskit</td><td>0.25.0</td></tr><tr><td>Terra</td><td>0.17.0</td></tr><tr><td>Aer</td><td>0.8.0</td></tr><tr><td>Ignis</td><td>0.6.0</td></tr><tr><td>Aqua</td><td>0.9.0</td></tr><tr><td>IBM Q Provider</td><td>0.12.2</td></tr><tr><th>System information</th></tr><tr><td>Python</td><td>3.8.8 (default, Feb 24 2021, 13:46:16) \n",
       "[Clang 10.0.0 ]</td></tr><tr><td>OS</td><td>Darwin</td></tr><tr><td>CPUs</td><td>4</td></tr><tr><td>Memory (Gb)</td><td>32.0</td></tr><tr><td colspan='2'>Tue Apr 06 21:48:52 2021 EDT</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2021.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import qiskit.tools.jupyter\n",
    "%qiskit_version_table\n",
    "%qiskit_copyright"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
